package com.etc.reflectdemo;

/**
 * @author: knowno
 * @create: 2024-09-18 10:56
 * @Version 1.0
 **/
public class TestPerson {
    public static void main(String[] args) throws ClassNotFoundException {
        //获取Class类型对象的方法
        Person person = new Person();
        //1 .对象名.getClass
        Class<? extends Person> aClass = person.getClass();

        //2 类名.class
        Class<Person> personClass = Person.class;

        //3 通过Class.forName获取对象
        Class<?> aClass1 = Class.forName("com.etc.reflectdemo.Person");

        //4 通过getSuperClass方法
        Class<? super Person> superclass = personClass.getSuperclass();

    }
}

class Person {

    private int age;
    public String sex;
    int id;

    @Override
    public String toString() {
        return "Person{" +
                "age=" + age +
                ", sex='" + sex + '\'' +
                ", id=" + id +
                '}';
    }

    /**
     * 无参数的构造
     */
    public Person() {
        System.out.println("无参数的构造,Person类对象...");
    }

    /**
     * 带一个参数 私有的
     * @param id
     */
    private Person(Integer id) {
        this.id = id;
        System.out.println("带一个参数参数,私有的构造,Person类对象...");
    }

    /**
     * 带一个参数  受保护的
     * @param sex
     */
    protected Person(String sex) {
        this.sex = sex;
        System.out.println("带一个参数参数的,Protected构造,Person类对象...");
    }
    public void method1() {
        System.out.println("public method1");
    }
    private void method2() {
        System.out.println("private method2");
    }


    //注意，我们的实体类中没有这个address属性. 我们内省机制认为address就是一个属性.

    public void setAddress(){

    }
}